package com.zhongwang.mms.module.half.dao;

import com.zhongwang.mms.gen.entity.HInventory;
import com.zhongwang.mms.module.half.model.HInventoryModel;
import com.zhongwang.mms.module.half.model.HInventoryQueryModel;
import com.zhongwang.mms.module.half.model.HOrderDetailModel;
import com.zhongwang.mms.module.half.model.HalInProReportExport;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface HInventoryDao {

    //添加库存信息
    int insert(HInventory record);

    //查询是否有同种物料
    HInventory selectAllByName(HInventory hInventory);

    //如果有同种物料则修改库存（根据物料描述修改库存数量）
    int update(HInventory hInventory);

    //查询库存信息 返回HOrderDetailModel
    List<HOrderDetailModel> findHInventoryByQuery(HInventoryQueryModel query);

    //出库根据主键修改库存数量
    int updateHInventoryById(HInventory hInventory);

    //查询库存信息 返回HInventory
    List<HInventory> selectHInventoryByQuery(HInventoryQueryModel query);

    //按物料描述，物料名称，数量，单位进行匹配出库
    int updateHInventoryByDesc(HInventory hInventory);

    //根据ID查询库存信息返回前台页面
    List<HInventoryModel> selectInvByItyId(Integer id);

    //根据ID查询库存信息
    HInventoryModel selectHalfInveById(Integer id);

    //根据库存ID修改
    int updateInvByItyId(HInventoryModel hInventoryModel);

    //查询库存列表（库存调整用）
    List<HInventoryModel> selectHalfInve(HInventoryModel hInventoryModel);

    //根据主键修改库存
    int updateByPrimaryKeySelective(HInventory record);

    //根据子单ID查询库存
    List<HInventory> selectAllByRowNo(Integer odaId);

    //根据子单ID修改库存数量
    int updateHInventoryNumByRowNo(HInventory hInventory);

    //根据库存主键修改库存数量
    int updateHInventoryNumById(HInventory hInventory);
    //根据主键查询库存
    HInventory selectAllById(Integer ityId);

    //根据主键修改库存数量
    int updateHInventoryAvaNumByPrimary(HInventory hInventory);

    //项目划库存新增标记列表
    List<HInventoryModel> findProToInvInventoryListByQuery(HInventoryQueryModel query);

    /**库存查询*/
    List<HInventoryModel> selectHInventoryModeByQuery(HInventoryQueryModel hInventoryQueryModel);

    /**串料申请弹出框数据*/
    List<HInventoryModel> selectChangeApplyHInventoryByQuery(HInventoryQueryModel query);

    /**根据主键数组获取库存列表*/
    List<HInventory> findInventoryListByityIds(String ityIds);

    /**库存信息批量修改*/
    void updateSelectiveByPrimaryKeys(HInventoryModel param);

    /**制作件在库项目明细表*/
    List<HalInProReportExport> findHalInProReportList(HalInProReportExport param);

    int updateHInventoryNumByRowNo2(HInventory hInventory);
    int updateHInventoryNumById2(HInventory hInventory);

    int createFabricatedPartsExportByQueryTempTable(HInventoryQueryModel param);
    int createFabricatedPartsExportByQueryNotMoneyTempTable(HInventoryQueryModel param);
    int createOutsourcedPartsExportByQueryTempTable(HInventoryQueryModel param);
    int createOutsourcedPartsExportByQueryNotMoneyTempTable(HInventoryQueryModel param);
    int createAluminumMaterialExportByQueryTempTable(HInventoryQueryModel param);
    int createAluminumMaterialExportByQueryNotNoneyTempTable(HInventoryQueryModel param);
}